/// Copyright (c) zhuzichu520
/// https://github.com/zhuzichu520/FluentUI
/// This file is licensed under MIT
#include "Components/FileWatcher.h"

FileWatcher::FileWatcher(QObject* parent) : QObject{parent} {
  connect(&_watcher, &QFileSystemWatcher::fileChanged, this,
          [=](const QString& path) {
            Q_EMIT fileChanged();
            clean();
            _watcher.addPath(_path);
          });
  connect(this, &FileWatcher::pathChanged, this, [=]() {
    clean();
    _watcher.addPath(_path.replace("file:///", ""));
  });
  if (!_path.isEmpty()) {
    _watcher.addPath(_path);
  }
}

void FileWatcher::clean() {
  foreach (const QString& item, _watcher.files()) {
    _watcher.removePath(item);
  }
}
